﻿/**********************************************************/
/* 5-10-2010 - Jeroen van Eijk - 0911305	        	  */
/*							                              */
/* Het bord waar de spelers op staan en vakken op liggen  */
/**********************************************************/
using Roborally.CommonData.Enums;

namespace Roborally.Bord
{
    /// <summary>
    /// Pusher, deze duwd de speler een hokje verder als deze actief is
    /// </summary>
    public class Pusher:Vak
    {
        #region Fields en Properties
        private Richting richting;
        private int[] actieveBeurten;

        /// <summary>
        /// Geeft de richting aan welke de speler wordt opgeduwd
        /// </summary>
        public Richting Richting
        {
            get { return richting; }
        }
        #endregion

        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="muur">Wordt doorgezonden naar de base klasse</param>
        /// <param name="richting">De richting waar de robot op geduwt wordt</param>
        /// <param name="actieveBeurten">De beurten(1-5) waarin de pusher actief is</param>
        public Pusher(Richting richting,int[] actieveBeurten, bool[] muur)
            : base(muur)
        {
            this.richting = richting;
            this.actieveBeurten = actieveBeurten;
        }

        /// <summary>
        /// Method die het VakTyperetourneert.
        /// </summary>
        /// <returns>VakType van deze klasse.</returns>
        public override VakType KrijgType()
        {
            return VakType.Pusher;
        }

        /// <summary>
        /// Deze method kijkt of de pusher deze beurt actief is
        /// </summary>
        /// <param name="Beurt">huidige beurt(1-5)</param>
        /// <returns>True als pusher actief is</returns>
        public override bool Actief(int Beurt)
        {
            int i = 0;
            bool gevonden = false;
            while (i < actieveBeurten.Length|| !gevonden)
            {
                if (actieveBeurten[i] == Beurt)
                    gevonden = true; ;
            }
            return gevonden;
        }

        /// <summary>
        /// Geeft de richting van het object terug indien van toepassing.
        /// </summary>
        /// <returns>Richting van het object</returns>
        public override Richting KrijgRichting()
        { return richting; }

        /// <summary>
        /// Geeft de draairichting van het object terug indien van toepassing.
        /// </summary>
        /// <returns>Draairichting van het object</returns>
        public override DraaiRichting KrijgDraairichting()
        { return DraaiRichting.Links; }

        /// <summary>
        /// Geeft het bandtype van het object terug indien van toepassing.
        /// </summary>
        /// <returns>BandType van het object</returns>
        public override BandType KrijgBandType()
        { return BandType.VanBovenLinksNaarOnder; }

        /// <summary>
        /// Geeft het checkpoint nummer van het object terug indien van toepassing.
        /// </summary>
        /// <returns>Checkpoint nummer van het object</returns>
        public override int CheckpointNummer()
        { return 0; }

        /// <summary>
        /// Geeft de dimensie van het object terug indien van toepassing.
        /// </summary>
        /// <returns>Dimensie van het object</returns>
        public override Dimensie KrijgDimensie()
        { return Dimensie.Horizontaal; }

        /// <summary>
        /// Geeft of er een lasermondin het vak bevind indien van toepassing.
        /// </summary>
        /// <returns>True als er een lasermond in zit</returns>
        public override bool KrijgLaserMond()
        { return false; }

        /// <summary>
        /// Geeft de kracht van het object terug indien van toepassing.
        /// </summary>
        /// <returns>Kracht van het object</returns>
        public override int KrijgKracht()
        { return 0; }
    }
}
